package com.lion.common.base.utils;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

/**
 * @author Chris Chan
 * Create On 2025/8/7 上午11:28
 * Use for:
 * Explain:
 */
public class JsonUtil {
    private static Gson gson = new Gson().newBuilder().create();

    /**
     * 将对象转换为JSON字符串
     *
     * @param object 要转换的对象
     * @return 转换后的JSON字符串
     */
    public static String toJson(Object object) {
        return gson.toJson(object);
    }

    public static <T> T fromJson(String json, Class<T> clazz) {
        return gson.fromJson(json, clazz);
    }

    /**
     * 将JSON字符串转换为对象
     *
     * @param json 要转换的JSON字符串
     * @param type 目标对象的类
     * @param <T>  目标对象的类型
     * @return 转换后的对象
     */
    public static <T> T fromJson(String json, Type type) {
        return gson.fromJson(json, type);
    }

    /**
     * 将JSON字符串转换为对象
     *
     * @param json 要转换的JSON字符串
     * @param type 目标对象的类型
     * @param <T>  目标对象的类型
     * @return 转换后的对象
     */
    public static <T> T fromJson(String json, TypeToken<T> type) {
        return gson.fromJson(json, type.getType());
    }

}
